package org.example.day;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: TODO
 * @Author wyatt
 * @Data 2024/07/29 9:46
 */
public class Solution682 {

    public static void main(String[] args) {
        System.out.println(new Solution682().calPoints(new String[]{"5","2","C","D","+"}));
    }

    //整数 x - 表示本回合新获得分数 x
    //"+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
    //"D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
    //"C" - 表示前一次得分无效，将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。

    public int calPoints(String[] operations) {
        int sum = 0;
        List<Integer> scoreList = new ArrayList<>();
        for (int i = 0; i < operations.length; i++) {
            if(operations[i].equals("+")){
                scoreList.add(scoreList.get(scoreList.size()-1) + scoreList.get(scoreList.size()-2));
            }else if(operations[i].equals("D")){
                scoreList.add(scoreList.get(scoreList.size()-1) * 2);
            }else if(operations[i].equals("C")){
                scoreList.remove(scoreList.size() - 1);
            }else {
                scoreList.add(Integer.parseInt(operations[i]));
            }
        }
        for (Integer value : scoreList) {
            sum+=value;
        }
        return sum;
    }

}
